#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]); } |
English