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[15];
- bool semn[15];
- };
- bool crt ( A x, A y );
- A v[NMAX];
- int t, n, i, j, nr, a[NMAX], S[NMAX], maxx;
- char c, s[20];
- int main()
- {
- ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
- cin >> t;
- while ( t-- )
- {
- cin >> n;
- for ( i = 1 ; i <= n ; i++ )
- {
- cin >> c >> nr;
- cin.getline ( s, 20 );
- v[i].nr = nr;
- if ( s[1] == 'T' && c == '<' ) v[i].semn[1] = 1, v[i].val[1]++;
- else if ( s[1] == 'T' && c == '=' ) v[i].semn[3] = 1, v[i].val[3]++;
- else if ( s[1] == 'T' && c == '>' ) v[i].semn[4] = 1, v[i].val[4]++;
- else if ( s[1] == 'F' && c == '<' ) v[i].semn[5] = 1, v[i].val[5]++;
- else if ( s[1] == 'F' && c == '=' ) v[i].semn[6] = 1, v[i].val[6]++;
- else if ( s[1] == 'F' && c == '>' ) v[i].semn[2] = 1, v[i].val[2]++;
- }
- 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 )
- {
- if ( v[i].semn[1] == 1 ) v[j].semn[1] = 1, v[j].val[1] += v[i].val[1];
- if ( v[i].semn[2] == 1 ) v[j].semn[2] = 1, v[j].val[2] += v[i].val[2];
- if ( v[i].semn[3] == 1 ) v[j].semn[3] = 1, v[j].val[3] += v[i].val[3];
- if ( v[i].semn[4] == 1 ) v[j].semn[4] = 1, v[j].val[4] += v[i].val[4];
- if ( v[i].semn[5] == 1 ) v[j].semn[5] = 1, v[j].val[5] += v[i].val[5];
- if ( v[i].semn[6] == 1 ) v[j].semn[6] = 1, v[j].val[6] += v[i].val[6];
- i++;
- }
- j = i - 1;
- }
- for ( j = 1 ; j <= n ; j++ )
- {
- if ( v[j].semn[1] == 1 ) a[1] += v[j].val[1], a[j] -= v[j].val[1];
- if ( v[j].semn[2] == 1 ) a[2] += v[j].val[2], a[j+1] -= v[j].val[2];
- if ( v[j].semn[3] == 1 ) a[j] += v[j].val[3], a[j+1] -= v[j].val[3];
- if ( v[j].semn[4] == 1 ) a[j+1] += v[j].val[4];
- if ( v[j].semn[5] == 1 ) a[j] += v[j].val[5];
- if ( v[j].semn[6] == 1 ) 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 << '\n';
- /*for ( i = 1 ; i <= n ; i++ ) cout << S[i] << ' ';
- cout << '\n';*/
- for ( i = 1 ; i <= n ; i++ )
- {
- a[i] = S[i] = v[i].nr = 0;
- for ( j = 1 ; j <= 6 ; j++ ) v[i].semn[j] = 0, v[i].val[j] = 0;
- }
- }
- return 0;
- }
- bool crt ( A x, A y )
- {
- if ( x.nr < y.nr || ( x.nr == y.nr && x.semn < y.semn ) ) 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