代码如下,实在想不到如何优化时间复杂度
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long stime = System.currentTimeMillis();
int n = sc.nextInt();
int m = sc.nextInt();
int[] a = new int[n];
double[] t = new double[n];
int[][] ij = new int[m][2];
double[][] xy = new double[m][2];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
t[i] = sc.nextDouble();
}
for (int i = 0; i < m; i++) {
ij[i][0] = sc.nextInt();
ij[i][1] = sc.nextInt();
xy[i][0] = sc.nextInt();
xy[i][1] = sc.nextInt();
}
double k = 1;
for (int i = 0; i < m; i++) {
for (int j = ij[i][0] - 1; j < ij[i][1]; j++) {
if (a[j] == 1 && t[j] >= 0.5 && t[j] <= 2) {
k *= t[j];
} else {
double dx = xy[i][0] * Math.cos(t[j]) - xy[i][1] * Math.sin(t[j]);
double dy = xy[i][0] * Math.sin(t[j]) + xy[i][1] * Math.cos(t[j]);
xy[i][0] = dx;
xy[i][1] = dy;
}
}
xy[i][0] = xy[i][0] * k;
xy[i][1] = xy[i][1] * k;
k = 1;
}
for (int i = 0; i < m; i++) {
System.out.print(xy[i][0] + " " + xy[i][1] + "\n");
}
long etime = System.currentTimeMillis();
System.out.println("共耗时:" + (etime - stime));
}
}