#include <bits/stdc++.h> using namespace std; int liczbasumow, wagisumow[500002], licznik, zduplikowane[500002], wskaznik; long long sumy[500002], maks; string wynik = ""; int main() { scanf("%d", &liczbasumow); for(int i = 1; i <= liczbasumow; i++) { scanf("%d", &wagisumow[i]); zduplikowane[i] = wagisumow[i]; } sort(wagisumow, wagisumow+liczbasumow+1); //sumy[1] = wagisumow[1]; for(int i = 1; i <= liczbasumow; i++) { if(wagisumow[i] > wagisumow[i-1]) { sumy[i] += sumy[i-1] + wagisumow[i] + licznik; licznik = 0; } else if(i != liczbasumow) { sumy[i] = sumy[i-1]; licznik += wagisumow[i]; } else { sumy[i] += sumy[i-1] + wagisumow[i] + licznik; } } for(int i = 1; i <= liczbasumow; i++) { if(wagisumow[i+1] != wagisumow[i]) { if(sumy[i] > wagisumow[i+1]) { maks = wagisumow[i]; break; } } else { wskaznik = 1; for(int j = i+2; wagisumow[j] == wagisumow[j-1]; j++) wskaznik++; if(sumy[i] > wagisumow[i+wskaznik+1]) { maks = wagisumow[i]; break; } } } for(int i = 1; i < liczbasumow+1; i++) { if(zduplikowane[i] >= maks && maks != wagisumow[1]) wynik += "T"; else wynik += "N"; } //printf("%s", wynik); cout << wynik; // cout << maks; // printf("%d", sumy[liczbasumow]); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <bits/stdc++.h> using namespace std; int liczbasumow, wagisumow[500002], licznik, zduplikowane[500002], wskaznik; long long sumy[500002], maks; string wynik = ""; int main() { scanf("%d", &liczbasumow); for(int i = 1; i <= liczbasumow; i++) { scanf("%d", &wagisumow[i]); zduplikowane[i] = wagisumow[i]; } sort(wagisumow, wagisumow+liczbasumow+1); //sumy[1] = wagisumow[1]; for(int i = 1; i <= liczbasumow; i++) { if(wagisumow[i] > wagisumow[i-1]) { sumy[i] += sumy[i-1] + wagisumow[i] + licznik; licznik = 0; } else if(i != liczbasumow) { sumy[i] = sumy[i-1]; licznik += wagisumow[i]; } else { sumy[i] += sumy[i-1] + wagisumow[i] + licznik; } } for(int i = 1; i <= liczbasumow; i++) { if(wagisumow[i+1] != wagisumow[i]) { if(sumy[i] > wagisumow[i+1]) { maks = wagisumow[i]; break; } } else { wskaznik = 1; for(int j = i+2; wagisumow[j] == wagisumow[j-1]; j++) wskaznik++; if(sumy[i] > wagisumow[i+wskaznik+1]) { maks = wagisumow[i]; break; } } } for(int i = 1; i < liczbasumow+1; i++) { if(zduplikowane[i] >= maks && maks != wagisumow[1]) wynik += "T"; else wynik += "N"; } //printf("%s", wynik); cout << wynik; // cout << maks; // printf("%d", sumy[liczbasumow]); } |