Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define NMAX 1000005
- using namespace std;
- struct A
- {
- int nr, val[10];
- };
- bool crt ( A x, A y );
- A v[NMAX];
- int t, n, i, j, z, nr, a[NMAX], S[NMAX], maxx, nrr;
- char c, s[30];
- int main()
- {
- ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
- cin >> t;
- while ( t-- )
- {
- cin >> n;
- z = nrr = 0;
- for ( i = 1 ; i <= n ; i++ )
- {
- cin >> c >> nr;
- cin.getline ( s, 30 );
- if ( nr > 0 )
- {
- v[++z].nr = nr;
- if ( s[1] == 'T' && c == '<' ) v[z].val[1]++;
- else if ( s[1] == 'T' && c == '=' ) v[z].val[3]++;
- else if ( s[1] == 'T' && c == '>' ) v[z].val[4]++;
- else if ( s[1] == 'F' && c == '<' ) v[z].val[5]++;
- else if ( s[1] == 'F' && c == '=' ) v[z].val[6]++;
- else if ( s[1] == 'F' && c == '>' ) v[z].val[2]++;
- }
- else
- {
- if ( s[1] == 'T' && c == '>' ) nrr++;
- else if ( s[1] == 'F' && c == '<' ) nrr++;
- else if ( s[1] == 'F' && c == '=' ) nrr++;
- }
- }
- sort ( v + 1, v + n + 1, crt );
- for ( j = 1 ; j < n ; j++ )
- {
- i = j + 1;
- while ( i <= n && v[j].nr == v[i].nr )
- {
- v[j].val[1] += v[i].val[1];
- v[j].val[2] += v[i].val[2];
- v[j].val[3] += v[i].val[3];
- v[j].val[4] += v[i].val[4];
- v[j].val[5] += v[i].val[5];
- v[j].val[6] += v[i].val[6];
- i++;
- }
- j = i - 1;
- }
- for ( j = 1 ; j <= n ; j++ )
- {
- a[1] += v[j].val[1], a[j] -= v[j].val[1];
- a[1] += v[j].val[2], a[j+1] -= v[j].val[2];
- a[j] += v[j].val[3], a[j+1] -= v[j].val[3];
- a[j+1] += v[j].val[4];
- a[j] += v[j].val[5];
- a[1] += v[j].val[6], a[j] -= v[j].val[6], a[j+1] += v[j].val[6];
- i = j + 1;
- while ( i <= n && v[j].nr == v[i].nr ) i++;
- j = i - 1;
- }
- S[1] = a[1];
- for ( i = 2 ; i <= n ; i++ ) S[i] = S[i-1] + a[i];
- maxx = 0;
- for ( i = 1 ; i <= n ; i++ ) maxx = max ( maxx, S[i] );
- cout << n - maxx - nrr << '\n';
- for ( i = 1 ; i <= n ; i++ )
- {
- a[i] = S[i] = v[i].nr = 0;
- for ( j = 1 ; j <= 6 ; j++ ) v[i].val[j] = 0;
- }
- }
- return 0;
- }
- bool crt ( A x, A y )
- {
- if ( x.nr < y.nr ) return 1;
- return 0;
- }
- /*
- 2
- 3
- = 5 True
- > 3 True
- = 1 False
- 2
- > 4 True
- = 4 True
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement